// 调取数据库内容，导入链接
import { connection } from "../app/mysql/mysql";
// 导入用户输入内容（新增）
import { PostModel } from "./post.model";

//函数的功能是获取内容列表getPosts
export const getPosts = async () => {
  //假设的数据库数据
  // const data = [{
  //   "p_name": "妙蛙种子",
  //   "p_id": "001",
  //   "p_url": "poke/001.png",
  //   "p_attr1": 12,
  //   "p_attr2": 4,
  //   "p_capture": 5.9
  // },
  // {
  //   "p_name": "妙蛙草",
  //   "p_id": "002",
  //   "p_url": "poke/002.png",
  //   "p_attr1": 12,
  //   "p_attr2": 4,
  //   "p_capture": 5.9
  // },
  // {
  //   "p_name": "妙蛙花",
  //   "p_id": "003",
  //   "p_url": "poke/003.png",
  //   "p_attr1": 12,
  //   "p_attr2": 4,
  //   "p_capture": 5.9
  // }]
  // 查询语句关联多表
  // 注意这里的json_object()函数，需要mysql 8.x 版本，低版本出来的是一个字符串对象
  const sql = `select post.id,post.title,post.content,json_object('id',user.id,'name',user.name) as user from post left join user on user.id=post.userid;`;
  // 解构数据
  // 只有mysql2里才有一个.promise()方法，可以返回一个promise，这样才可以使用 async awite
  const [data] = await connection.promise().query(sql);
  return data;
}

//创建内容，新增数据createPost
export const createPost = async (post:PostModel) => {
  // 准备查询
  const sql = `insert into post set ?`;
  // 执行查询                                    sql语句 传递的参数
  const [data] = await connection.promise().query(sql,post);
  // 提供数据 给controller
  return data;
}

// 更新内容
//                               内容的id      要更新的内容
export const updataPost = async (postId:number,post:PostModel) => {
  // sql                      内容        id号
  const sql = `update post set ? where id=?`;
  //                                                 传参
  const [data] = await connection.promise().query(sql,[post,postId]);
  return data;
}

// 删除内容
export const deletePost = async (postId:number) => {
  // sql                      内容        id号
  const sql = `delete from post where id=?`;
  //                                                  传参
  const [data] = await connection.promise().query(sql,postId);
  return data;
}

//在控制器中导入post.controller.ts